const express = require('express');
const { OAuth2Client } = require('google-auth-library');
const cors = require('cors');
const jwt = require('jsonwebtoken');
const morgan = require('morgan'); // ✅ 引入 morgan
const app = express();
app.use(cors());
app.use(express.json());
// ✅ 使用 morgan 作为中间件
app.use(morgan('dev')); // 你也可以用 'dev' 模式（更简洁）
const PORT = 3000;
const CLIENT_ID = '';
const CLIENT_SECRET = '';
const JWT_SECRET = 'xuxiao'; // 用于生成会话令牌

const client = new OAuth2Client(CLIENT_ID);

// 处理Google登录
app.post('/auth/google', async (req, res) => {
    const { token } = req.body;
    
    try {
        const ticket = await client.verifyIdToken({
            idToken: token,
            audience: CLIENT_ID,
        });
        
        const payload = ticket.getPayload();
        const userid = payload['sub'];
        
        // 在这里可以检查用户是否已存在于你的数据库中
        // 如果不存在，可以创建新用户
        
        // 创建JWT会话令牌
        const sessionToken = jwt.sign(
            { userId: userid, email: payload.email },
            JWT_SECRET,
            { expiresIn: '1h' }
        );
        // 实际项目中的token
        const jwtToken = ""
        res.json({
            success: true,
            user: {
                id: userid,
                name: payload.name,
                email: payload.email,
                picture: payload.picture,
            },
            token: jwtToken,
            sessionToken: sessionToken
        });
    } catch (error) {
        console.error('Error verifying Google token:', error);
        res.status(401).json({ success: false, message: 'Authentication failed' });
    }
});

// 退出登录
app.post('/auth/logout', (req, res) => {
    // 在实际应用中，你可能需要使会话令牌失效
    res.json({ success: true });
});

app.listen(PORT, () => {
    console.log(`Server running on http://localhost:${PORT}`);
});